package org.example;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class TimePrintTask implements Runnable {

    // 时间格式化工具（线程安全，全局复用）
    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public void run() {
        long startTime = System.currentTimeMillis();
        long duration = 60 * 1000; // 任务总时长：1分钟（单位：毫秒）

        System.out.println("=== 耗时任务启动 ===");
        System.out.printf("任务规则：每1秒输出当前时间，持续%d分钟%n%n", duration / 60000);

        // 循环执行：未到1分钟则继续输出
        while (System.currentTimeMillis() - startTime < duration) {
            try {
                // 格式化并输出当前时间（含线程名，便于观察线程池工作）
                String currentTime = sdf.format(new Date());
                System.out.printf("线程[%s] - 当前时间：%s%n",
                        Thread.currentThread().getName(), currentTime);

                // 休眠1秒（模拟耗时操作，控制输出频率）
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                // 恢复线程中断状态（规范处理）
                Thread.currentThread().interrupt();
                System.out.println("\n=== 任务被中断 ===");
                break;
            }
        }

        System.out.println("\n=== 耗时任务结束（已运行1分钟） ===");
    }
}
